package com.example.spring5.IOC.注解;

import com.example.spring5.bean.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component("基于注解方式属性注入") //默认类名第一个字母小写
public class 基于注解方式属性注入 {
    @Autowired //根据属性类型进行自动装配  不用new
//    @Qualifier("名称") // 比如这是个接口  没法找具体实现类 可以指定名称 必须与上一个一起使用
//    @Resource  Autowired和Qualifier的结合  加括号 也可以写名称 他是javax包里的
    UserDao userDao;

    @Autowired
    @Qualifier("qqqqq")//不可单独使用
    基于注解的Bean s;

    @Resource(name = "qqqqq")
    基于注解的Bean s1;

    @Value("666")
    private Integer integer;
    @Value(value = "999")
    private String string;

    public static void main(String[] args) {
        ApplicationContext a = new ClassPathXmlApplicationContext("IOC2.xml");
        //如果IOC2.xml的id= dataSource 删了   会报错  要找dataSource  应该是别的地方出错了
        基于注解方式属性注入 qq = a.getBean("基于注解方式属性注入", 基于注解方式属性注入.class);
        qq.userDao.add();
        System.out.println(qq);
        qq.s.工厂Bean();
        qq.s1.工厂Bean();

    }

}
